#ifndef ROBOT_STRUCTURES_H
#define ROBOT_STRUCTURES_H

#include <opencv/cv.h>

/**
 * A C struct with some C++ enhancements.
 */
struct RobotOrientation {
	cv::Point point;	// x is pixels from left of image, y is pixels from top
	double angle;		// Degrees with 0 to the east and 90 to the south
	
	// Convenience constructors
	
	explicit RobotOrientation(cv::Point point, double angle) :
		point(point),
		angle(angle)
	{}
	
	explicit RobotOrientation(int x, int y, double angle) :
		point(cv::Point(x, y)),
		angle(angle)
	{}
	
	RobotOrientation() {}
};

enum DriveDirection {
    DIR_STOP = 0,
    DIR_FORWARD,			// 1
    DIR_BACKWARD,			// 2
    DIR_LEFT,				// 3
    DIR_RIGHT,				// 4
    DIR_ROT_LEFT,			// 5
    DIR_ROT_RIGHT,			// 6
    DIR_DIAG_FOR_LEFT,		// 7
    DIR_DIAG_FOR_RIGHT,		// 8
    DIR_DIAG_BACK_LEFT,		// 9
    DIR_DIAG_BACK_RIGHT,	// 10
    HEAD_UP,				// 11
    HEAD_DOWN,				// 12
    HEAD_MIDDLE				// 13
};

#endif
